﻿using System;
using CAD.DAO;
using System.Data;
using RN.Entidades;
using System.Collections.Generic;

namespace RN.Componentes
{
    public class CProveedor
    {
        #region DMLS
        public static bool Insertar(Proveedor objProxy)
        {
            ValidationException x = new ValidationException();

            if (string.IsNullOrEmpty(objProxy.Nombre))
                x.AgregarError("Ingrese el nombre del proveedor");

            if (x.Cantidad > 0)
                throw x;

            DAOProveedor daoProxy = new DAOProveedor();

            return daoProxy.Insertar(objProxy.Nombre, objProxy.Telefono, objProxy.Direccion, objProxy.Descripcion) > 0;
        }

        public static bool ActualizarProveedor(Proveedor objProxy)
        {
            ValidationException x = new ValidationException();
            if (objProxy.Codigo <= 0)
                x.AgregarError("Ingrese el código");

            if (string.IsNullOrEmpty(objProxy.Nombre))
                x.AgregarError("Ingrese el nombre del proveedor");

            if (x.Cantidad > 0)
                throw x;

            DAOProveedor daoProxy = new DAOProveedor();

            return daoProxy.Actualizar(objProxy.Codigo, objProxy.Nombre, objProxy.Telefono, objProxy.Direccion, objProxy.Descripcion);
        }
        
        public static bool EliminarProveedor(int codigo)
        {
            ValidationException x = new ValidationException();

            if (codigo <= 0)
                x.AgregarError("Ingrese el código");

            if (x.Cantidad > 0)
                throw x;

            DAOProveedor daoProxy = new DAOProveedor();

            return daoProxy.Eliminar(codigo);
        }
        #endregion

        #region Selects
        public static List<Proveedor> Traer()
        {
            DAOProveedor daoProxy = new DAOProveedor();

            DataSet dtsProxy = daoProxy.TraerProveedor();

            return CargarLista(dtsProxy.Tables[0]);
        }

        public static List<Proveedor> TraerXId(int codigo)
        {
            DAOProveedor daoProxy = new DAOProveedor();

            DataSet dtsProxy = daoProxy.TraerProveedorXId(codigo);

            return CargarLista(dtsProxy.Tables[0]);
        }

        public static List<Proveedor> TraerXNombre(string nombre)
        {
            DAOProveedor daoProxy = new DAOProveedor();

            DataSet dtsProxy = daoProxy.TraerProveedorXNombre(nombre);

            return CargarLista(dtsProxy.Tables[0]);
        }
        #endregion

        #region Metodos Privados
        private static List<Proveedor> CargarLista(DataTable tabla)
        {
            List<Proveedor> lstProxy = new List<Proveedor>();

            foreach (DataRow fila in tabla.Rows)
            {
                lstProxy.Add(Cargar(fila));
            }
            return lstProxy;
        }

        private static Proveedor Cargar(DataRow fila)
        {
            Proveedor objProxy = new Proveedor();
            objProxy.Codigo = Convert.ToInt32(fila["Iproveedores_id"]);
            objProxy.Nombre = fila["snombre"].ToString();
            objProxy.Telefono = Convert.ToInt32(fila["Itelefono"]);
            objProxy.Direccion = fila["sdireccion"].ToString();
            objProxy.Descripcion = fila["sdescripcion"].ToString();
            return objProxy;
        }
        #endregion
    }
}
